# 集合的运算

"""
集合的主要运算
    交集 &  set1.intersection(set2)  set1.intersection_update(set2)
    并集 |  set1.union(set2)  set1.update(set2)
    差集 -  set1.difference(set2)  set1.difference_update(set2)
    对称差集 ^  set1.symmetric_difference(set2)  set1.symmetric_difference_update(set2)
"""

varset1 = {1, 2, 3, 4}
varset2 = {3, 4, 5, 6}
varset3 = {3, 4}

# 交集 &
res = varset1 & varset2
# {3, 4}

# 并集 |
res = varset1 | varset2
# {1, 2, 3, 4, 5, 6}

# 差集 -
res = varset1 - varset2
# {1, 2}
res = varset2 - varset1
# {5, 6}

# 对称差集 ^ 两个集合的并集减去差集
res = varset1 ^ varset2
# {1, 2, 5, 6}

# 交集运算函数
# set1.intersection(set2) 返回一个包含两个集合的交集的新的集合
# set1.intersection_update(set2) 没有返回值，将调用函数的集合修改为两个集合的交集
res = varset1.intersection(varset2)
# res = {3, 4}
varset1.intersection_update(varset2)
# varset1 = {3, 4}

# 并集运算函数
# 两个函数与求交集的两个函数用法一直
# set1.union(set2)
# set1.update(set2)
res = varset1.union(varset2)
# {1, 2, 3, 4, 5, 6}
varset1.update(varset2)
#  varset1 = {1, 2, 3, 4, 5, 6}

# 差集运算函数
# 求差集的两个运算函数与求并集的两个运算函数一致
# set1.difference(set2)
# set1.difference_update(set2)
res = varset1.difference(varset2)
# {1, 2}
varset1.difference_update(varset2)
# varset1 = {1, 2}

# 对称差集函数
# 求对称差集的两个还能输与用法与求并集的两个函数相同
# set1.symmetric_difference(set2)
# set1.symmetric_difference_update(set2)
res = varset1.symmetric_difference(varset2)
# {1, 2, 5, 6}
varset1.symmetric_difference_update(varset2)
# varset1 = {1, 2, 5, 6}

print(res)

# 检测超集和子集

vars1 = {1, 2, 3, 4, 5}
vars2 = {1, 2, 3}

# set1.issuperset(set2) 检测set1是否是set2的超集
res = vars1.issuperset(vars2)
# True
# set1.issubset(set2) 检测set1是否是set2的子集
res = vars1.issubset(vars2)
# False

vars1 = {1, 2, 3}
vars2 = {4, 5, 6}
# set1.isdisjoint(set2) 检测两个集合是否不相交，如果不相交返回True，如果相交返回Fals
res = vars1.isdisjoint(vars2)
# True
print(res)
